]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionSystem: Catch errors when updating extensions
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 9 Mar 2020 15:45:22 +0000 (16:45 +0100)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 17 Mar 2020 14:19:20 +0000 (14:19 +0000)
Extension updates are installed at startup, so any errors that bubble
up uncaught will prevent the startup to complete.

While the most likely error reason was addressed in the previous commit
(pending update for a no-longer exitent extension), it makes sense to
catch any kind of corrupt updates to not interfere with shell startup.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343

js/ui/extensionSystem.js

index 3f2ee35ef4072e82a9580cb74e8b9627a9af5a7c..f2e8db79d2ccb20b066ad5c6ac5781375b4f337b 100644 (file)
@@ -489,9 +489,14 @@ var ExtensionManager = class {
             let extensionDir = Gio.File.new_for_path(
                 GLib.build_filenamev([global.userdatadir, 'extensions', uuid]));
 
-            FileUtils.recursivelyDeleteDir(extensionDir, false);
-            FileUtils.recursivelyMoveDir(dir, extensionDir);
-            FileUtils.recursivelyDeleteDir(dir, true);
+            try {
+                FileUtils.recursivelyDeleteDir(extensionDir, false);
+                FileUtils.recursivelyMoveDir(dir, extensionDir);
+            } catch (e) {
+                log('Failed to install extension updates for %s'.format(uuid));
+            } finally {
+                FileUtils.recursivelyDeleteDir(dir, true);
+            }
         });
     }